import { Controller, Get, Post, Body, Patch, Param, Delete, Query, ParseIntPipe } from "@nestjs/common";
import { RoleService } from './role.service';
import { AssignRoleToUserDto, GetRoleDto, RoleDto, UpdateRoleDto } from "@/modules/role/dto/dto";

@Controller('role')
export class RoleController {
  constructor(private readonly roleService: RoleService) {}

  // 创建角色
  @Post()
  createRole(@Body() createRoleDto: RoleDto) {
    return this.roleService.createRole(createRoleDto);
  }

  // 获取角色列表，要求分页
  @Get('list')
  getRoleList(@Query() queryDto: GetRoleDto) {
    return this.roleService.getRoleList(queryDto);
  }

  // 删除角色
  @Delete(':id')
  removeRole(@Param('id', ParseIntPipe) id: number) {
    return this.roleService.removeRole(+id);
  }

  // 更新角色
  @Post('/update/:id')
  updateRole(@Param('id', ParseIntPipe) id: number, @Body() updateRoleDto: UpdateRoleDto) {
    return this.roleService.updateRole(+id, updateRoleDto);
  }

  // 分配角色给用户
  @Post('assignRoleToUser/:id')
  assignRoleToUser(
    @Param('id', ParseIntPipe) roleId: number,
    @Body() roleDto: AssignRoleToUserDto,
  ) {
    return this.roleService.assignRoleToUser(+roleId, roleDto);
  }

  // 查询角色详情
  @Get('detail/:id')
  getRoleDetail(@Param('id', ParseIntPipe) id: number) {
    return this.roleService.getRoleDetail(+id);
  }

  // 获取角色
  @Get(':id')
  getRole(@Param('id', ParseIntPipe) id: number) {
    return this.roleService.getRole(+id);
  }

  // 切换角色的状态
  @Post('switchStatus/:id')
  switchRoleStatus(@Param('id', ParseIntPipe) id: number) {
    return this.roleService.switchRoleStatus(+id);
  }

}
